home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_04 / chapman / errmgr.hpp < prev    next >
Text File  |  1994-03-01  |  2KB  |  56 lines

  1. Listing 4.
  2.  
  3. /* errmgr.hpp fragment */
  4.  
  5. class error_mgr {
  6.     public:
  7.         error_mgr(void);
  8.         ~error_mgr(void);
  9.         int define_dictionary(const char *filename);
  10.  
  11.         /* returns handler just hidden */
  12.         failure_handler *define_handler(
  13.                 failure_handler *new_handler);
  14.         /* returns handler just popped */
  15.         failure_handler *restore_handler(void);
  16.  
  17.         void fail(const char *fmt,...);
  18.         void vfail(const char *fmt,va_list ap);
  19.         void error(const char *fmt,...);
  20.         void verror(const char *fmt,va_list ap);
  21.         void warn(const char *fmt,...);
  22.         void vwarn(const char *fmt,va_list ap);
  23.         void post(const char *fmt,...);
  24.         void vpost(const char *fmt,va_list ap);
  25.  
  26.         const char *message(const char *fmt,
  27.                             char *msg_line,int len);
  28.  
  29.         int set_assert_flag(int asserts_on);
  30.         static int assertions_off(void)
  31.             { return asserts_off; }
  32.         int assert_failed(
  33.             const char *exp,const char *fname,
  34.             unsigned linenum);
  35.     private:
  36.         void setup(void);
  37.         static failure_handler *curr_handler,
  38.                                *default_handler;
  39.         static int is_set_up,asserts_off;
  40.         static error_dict_list *error_dicts;
  41.         static ptr_stack *handler_stack;
  42.         int find_replacement(
  43.             const char *key,char *msg_line,
  44.             int linelen);
  45.         /* unimplemented: */
  46.         error_mgr(const error_mgr &other);
  47.         error_mgr &operator =(const error_mgr &other);
  48. };
  49.  
  50. extern error_mgr err_mgr;
  51.  
  52. #define ASSERT(e) \
  53.     ((void)(err_mgr.assertions_off() || \
  54.      (e) || \
  55.      err_mgr.assert_failed(#e,__FILE__,__LINE__)))
  56.